define(['drawingManager', 'layer'], function (drawingManager, layer) {
    return {
        init: function () {
            load();
            $(".city").on('change', function () {
                alert($(this).val())
                setMapCenter(this.val())
            })
        }
    }
})
var map;//地图
var drawingManager;//绘制区域
var overlays = new Array();//绘制之后的区域
/**初始化加载*/
function load() {
    map = new BMap.Map("container"); //初始化地图
    var point = new BMap.Point(106.63543, 26.651516); //设置地图中心点
    map.centerAndZoom(point, 12);
    map.enableScrollWheelZoom();//启动滚动缩进
    getPositionNowList();//按照条件进行查询出对应的人员最新的数据-
    var myZoomCtrl = new ZoomControl(); // 创建控件(移除绘制状态)
    map.addControl(myZoomCtrl); // 添加到地图当中
    var top_left_control = new BMap.ScaleControl({anchor: BMAP_ANCHOR_TOP_LEFT});// 左上角，添加比例尺
    var top_left_navigation = new BMap.NavigationControl();  //左上角，添加默认缩放平移控件
    map.addControl(top_left_control);      // 测距离的
    map.addControl(top_left_navigation);   // 左导航默认
    var styleOptions = {
        strokeColor: "#00F5FF", //边线颜色。
        fillColor: "#00F5FF", //填充颜色。当参数为空时，圆形将没有填充效果。
        strokeWeight: 3, //边线的宽度，以像素为单位。
        strokeOpacity: 0.8, //边线透明度，取值范围0 - 1。
        fillOpacity: 0.6, //填充的透明度，取值范围0 - 1。
        strokeStyle: 'solid' //边线的样式，solid或dashed。
    };
    //实例化鼠标绘制工具
    drawingManager = new BMapLib.DrawingManager(map, {
        isOpen: false, //是否开启绘制模式
        enableDrawingTool: true, //是否显示工具栏
        drawingToolOptions: {
            anchor: BMAP_ANCHOR_TOP_RIGHT, //位置
            offset: new BMap.Size(40, 5), //偏离值
            scale: 0.8,
            drawingModes: [
                BMAP_DRAWING_POLYGON]//多边形
        },
        polygonOptions: styleOptions
        //多边形的样式
    });
    //添加鼠标绘制工具监听事件，用于获取绘制结果
    drawingManager.addEventListener('overlaycomplete', function (e) {
        //绘制之后的区域放入数组，方便后续清理
        overlays.push(e.overlay)
        //给绘制的多边形添加点击事件
        e.overlay.addEventListener('click', function () {
            submitData = {"geo": JSON.stringify(e.overlay.getPath()), "geotype": e.drawingMode};
            $.ajax({
                url: "/map/isPtInPoly",
                dataType: "json",
                type: "post",
                data: submitData,
                success: function (result) {
                    console.log(result)

                    // var data = result.data;
                    // $.each(data, function (code, points) {
                    //     var rowSplit = points.split(',');
                    //     var point = new BMap.Point(rowSplit[0], rowSplit[1]);
                    //     addMarker(point, code);
                    // })
                }
            })
        })
    })
    document.onkeydown = function (event) {
        switch (event.keyCode) {
            case 13:
                if (!window.buttonIsFocused) {
                    searchMap();
                }
                break; // enter 键
        }
    };
}

/**通过查询人员的坐标来固定中心坐标**************************************/
var regionArray = [];
function setMapCenter(value) {
    var bdary = new BMap.Boundary();
    bdary.get("value", function (rs) {       //获取行政区域
        $()
        map.clearOverlays();        //清除地图覆盖物
        var count = rs.boundaries.length; //行政区域的点有多少个
        if (count === 0) {
            alert('未能获取当前输入行政区域');
            return;
        }
        var pointArray = [];
        for (var i = 0; i < count; i++) {
            var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: "#ff0000"}); //建立多边形覆盖物
            map.addOverlay(ply);  //添加覆盖物
            pointArray = pointArray.concat(ply.getPath());
        }
        map.setViewport(pointArray);    //调整视野
        addlabel();
    });

}
/**添加标注**************************************/
/**
 *通过从后台获取最新人员坐标添加标注
 */
function getPositionNowList() {
    $.ajax({
        url: "/map/getPositionNowList",
        dataType: "json",
        type: "post",
        data: {
            "type": '11',//类型
            "noticePeople": '',//通知人
            "code": ''//人员编码
        },
        success: function (result) {
            var data = result.data;
            console.log(data)
            addMarker(data);
        }
    })
}

/**
 *通过坐标在地图上添加标注
 * @param data
 */
function addMarker(data) {
    $.each(data, function (index, obj) {
        var point = new BMap.Point(obj.lng, obj.lat);
        var marker;
        switch (obj.type) {
            case "SH":
                marker = new BMap.Marker(point, {
                    icon: new BMap.Icon("images/icon/cheng.png", new BMap.Size(24, 24))
                });
                break;
            case "SJ":
                marker = new BMap.Marker(point, {
                    icon: new BMap.Icon("images/icon/hong.png", new BMap.Size(24, 24))
                });
                break;
            case "SA":
                marker = new BMap.Marker(point, {
                    icon: new BMap.Icon("images/icon/lan.png", new BMap.Size(24, 24))
                });
                break;
            case "SD":
                marker = new BMap.Marker(point, {
                    icon: new BMap.Icon("images/icon/zi.png", new BMap.Size(24, 24))
                });
                break;
        }
        //点击标注弹出人员信息（）
        var opts = {
            width: 100,     // 信息窗口宽度
            height: 50,     // 信息窗口高度
            enableMessage: true,//设置允许信息窗发送短息
        }
        var infoWindow = new BMap.InfoWindow("<div>人员编号：" + obj.code + "</div><div>人员类型：" + obj.type + "</div><div style='text-align: right'><a>详细</a></div>"
            , opts
            )
        ;  // 创建信息窗口对象
        marker.addEventListener("click", function () {
            map.openInfoWindow(infoWindow, point); //开启信息窗口

        });
        map.addOverlay(marker);
        marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
    })
}
/**添加标注**************************************/

/**添加移除覆盖物控件*********************************************/
// 定义一个控件类,即function
function ZoomControl() {
    // 默认停靠位置和偏移量
    this.defaultAnchor = BMAP_ANCHOR_TOP_RIGHT;
    this.defaultOffset = new BMap.Size(10, 6);
}

// 通过JavaScript的prototype属性继承于BMap.Control
ZoomControl.prototype = new BMap.Control();

// 自定义控件必须实现自己的initialize方法,并且将控件的DOM元素返回
// 在本方法中创建个div元素作为控件的容器,并将其添加到地图容器中
ZoomControl.prototype.initialize = function (map) {
    // 创建一个DOM元素
    var div = document.createElement("div");
    div.innerHTML = '<img src="images/icon/qingchu.png" height="35" width="45" />'
    // 设置样式
    div.style.backgroundColor = "white";
    // 绑定事件
    div.onclick = function (e) {

        //关闭绘制效果
        drawingManager.close();
        //移除绘制的覆盖物
        $.each(overlays, function (index, over) {
            map.removeOverlay(over);
        })

    }
    // 添加DOM元素到地图中
    map.getContainer().appendChild(div);
    // 将DOM元素返回
    return div;
}
/**添加移除覆盖物控件*/
